//
// Created by d on 10/29/18.
//

#include <string>
#include <vector>
#include <GLFW/glfw3.h>
#include <memory>

#ifndef RAYTRACING_SHADERSOURCE_H
#define RAYTRACING_SHADERSOURCE_H

using namespace std;

class ShaderSource {
    string content;
    const char *contentPtr;

    string readFile(string fileName);

public:
    explicit ShaderSource(string fileName = "");

    explicit operator const char *const *();
};


class ShaderProgram {
private:
    vector<GLuint> shaderIDs;
    vector<ShaderSource> sources;
    GLuint shaderProgram;
public:
    ShaderProgram();
    void Init();
    bool addShaderFromFile(string fileName, GLuint64 shaderType);
    operator GLuint ();
};

#endif //RAYTRACING_SHADERSOURCE_H
